<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
	<meta http-equiv="Pragma" content="no-cache" />
	<meta name="robots" content="index, follow" />
	<meta name="language" content="pt-br" />
	<meta name="author" content="Mateus Martins" />
	<meta name="MSSmartTagsPreventParsing" content="true" />
    <title>WF/PHPDoc – Projeto Expresso Livre</title>
</head>

<body>

  <div id="main">
    <h1 id="DocumentaçãodeCódigo"><span class="searchword2">Documentação</span> de Código<a title="Link to this section" 
href="#Documenta%C3%A7%C3%A3odeC%C3%B3digo" class="anchor"></a></h1>
    <p> O <span class="searchword4">php</span>Documentor é o mais utilizado <span
 class="searchword1">para</span> auto-<span class="searchword2">documentação</span> da linguagem <span class="searchword4">PHP</span>. Similar ao Javadoc, e
      desenvolvido em PHP, pode ser usado da linha de <span 
class="searchword3">com</span>ando ou através de uma interface web para 
      criar documentação profissional para códigos-fonte PHP. phpDocumentor 
      oferece suporte para relacionar documentações, incorporando documentos 
      de usuário como tutoriais e a criação de código-fonte com destaque 
      visual com referência cruzada para documentação genérica do PHP. </p>
    <p> <span class="searchword4">php</span>Documentor usa um sistema <span 
class="searchword3">com</span>pleto de templates <span 
class="searchword1">para</span> mudar os comentários do seu código-fonte
      em formatos mais legíveis e, portanto, úteis. Este sistema permite a 
      criação de documentações de fácil leitura em 15 estilos prontos em 
      versões HTML, PDF, CHM e XML. Você também pode criar seus próprios 
      templates para obter um visual mais próximo do seu projeto. </p>
    <h2 id="Elementosdocumentáveis">Elementos documentáveis<a title="Link to
 this section" href="#Elementosdocument%C3%A1veis" class="anchor"></a></h2>
    <p> O <span class="searchword4">php</span>Documentor é capaz de documentar 
      automaticamente <span class="searchword3">com</span>andos include, 
      define, funções, páginas procedurais, classes, seus atributos e métodos.
      Todos podem conter as tags <span class="searchword0">padrão</span>. </p>
    <h2 id="Tagspadrão">Tags <span class="searchword0">padrão</span><a 
title="Link to this section" href="#Tagspadr%C3%A3o" class="anchor"></a></h2>
    <p> Dentre as tags disponíveis no <span class="searchword4">php</span>Documentor,
      estas seriam as mais relevantes no contexto dos processos de workflow: </p>
    <ul>
      <li>@author [nome_autor]: Autor do elemento atual </li>
    </ul>
    <ul>
      <li>@copyright [string]: informações sobre direitos 
        autorais </li>
    </ul>
    <ul>
      <li>@deprecated [version/info string]: Elementos 
        abandonados que não devem mais ser usados, podendo ser removidos em 
        futuras versões </li>
    </ul>
    <ul>
      <li>@example [arquivo]: Incluir um arquivo externo de 
        exemplo <span class="searchword3">com</span> coloração de sintaxe </li>
    </ul>
    <ul>
      <li><span class="searchword0">@filesource</span>: Similar a
        @example, porém voltado a arquivos internos </li>
    </ul>
    <ul>
      <li>@ignore: Evita a <span class="searchword2">documentação</span> de um elemento </li>
    </ul>
    <ul>
      <li>@internal [descrição]: Define descrição de elemento <span
 class="searchword3">com</span>o privada, interna ao projeto e que não 
        deve ser exibida na <span class="searchword2">documentação</span> final </li>
    </ul>
    <ul>
      <li>@link [URL link text, URL, URL, URL...]: Mostra um 
        link dentro da <span class="searchword2">documentação</span> </li>
    </ul>
    <ul>
      <li>@see 
        [file.ext|elementname|class::methodname()|class::$variablename|functionname()|function
        functionname Número ilimitado de valores se<span class="searchword1">para</span>dos
        por vírgulas]: Link para a <span class="searchword2">documentação</span> de um elemento </li>
    </ul>
    <ul>
      <li>@since [version/info string]: Versão a partir da qual 
        um elemento passou a integrar um pacote </li>
    </ul>
    <ul>
      <li>@todo [information string]: Modificações a serem 
        feitas </li>
    </ul>
    <ul>
      <li>@tutorial [package/ subpackage/ tutorialname.ext 
        #section.subsection description]: Mostra um link <span 
class="searchword1">para</span> a <span class="searchword2">documentação</span> de um pacote </li>
    </ul>
    <ul>
      <li>@uses 
        [file.ext|elementname|class::methodname()|class::$variablename|functionname()|function
        functionname]: descrição de <span class="searchword3">com</span>o o 
        elemento é usado </li>
    </ul>
    <ul>
      <li>@version [versionstring]: Versão de um elemento </li>
    </ul>
    <pre class="wiki">    Exemplo:
    /**
     * Gerencia o processo básico
     * 
     * @author Carlos Eduardo Nogueira Gonçalves
     * @package  Workflow
     * @license http://www.gnu.org/copyleft/gpl.html GPL 
     */
    </pre>
    <h2 id="Tagsinline">Tags inline<a title="Link to this section" 
href="#Tagsinline" class="anchor"></a></h2>
    <p> Diferentemente das tags normais, as tags inline podem ser usadas em 
      qualquer lugar dentro do bloco de <span class="searchword3">com</span>entários. </p>
    <ul>
      <li>inline {@link}: Exibe um link <span class="searchword1">para</span> uma URL ou a <span class="searchword2">documentação</span> de algum 
        elemento </li>
    </ul>
    <blockquote>
      <blockquote>
        <p> {@link  URL  description } </p>
      </blockquote>
    </blockquote>
    <blockquote>
      <blockquote>
        <p> {@link element description } </p>
      </blockquote>
    </blockquote>
    <ul>
      <li>inline {@tutorial}: Exibe um link <span class="searchword1">para</span> um tutorial </li>
    </ul>
    <blockquote>
      <blockquote>
        <p> {@tutorial package/ subpackage/ tutorialname.ext #section.subsection 
          description} </p>
      </blockquote>
    </blockquote>
    <ul>
      <li>inline {@source}: Exibe o código-fonte de uma função ou método 
        na descrição longa </li>
    </ul>
    <blockquote>
      <blockquote>
        <p> {@source startline number of lines} </p>
      </blockquote>
    </blockquote>
    <ul>
      <li>inline {@inheritdoc}: Usada <span class="searchword1">para</span> que as subclasses herdem a descrição detalhada de suas superclasses </li>
    </ul>
    <blockquote>
      <blockquote>
        <p> {@inheritdoc} </p>
      </blockquote>
    </blockquote>
    <pre class="wiki">    Exemplo:
    /**
     * Text with a normal @tutorial tag
     * @tutorial <span class="searchword4">php</span>Documentor/phpDocumentor.pkg
     */

    Exemplo:
    /**
     * inline tags demonstration
     *
     * this function works heavily with {@link foo()} to rule the world. If I want
     * to use the characters &quot;{@link&quot; in a docblock, I just use &quot;{@}link.&quot;  If
     * I want the characters &quot;{@*}&quot; I use &quot;{@}*}&quot;
     */

    </pre>
    <h2 id="Elementosprocedurais">Elementos procedurais<a title="Link 
to this section" href="#Elementosprocedurais" class="anchor"></a></h2>
    <p> São considerados elementos procedurais: <span class="searchword3">com</span>andos
      include, define, funções, e páginas procedurais. </p>
    <h3 id="Blocodecomentárioemníveldepágina">Bloco de <span 
class="searchword3">com</span>entário em nível de página<a title="Link 
to this section" href="#Blocodecoment%C3%A1rioemn%C3%ADveldep%C3%A1gina"
 class="anchor"></a></h3>
    <p> Um bloco de página pode ter qualquer uma das tags <span 
class="searchword0">padrão</span>, e deve obrigatoriamente: </p>
    <ul>
      <li>Ser o primeiro bloco em um arquivo; </li>
    </ul>
    <ul>
      <li>Conter uma tag @package. </li>
    </ul>
    <h3 id="Comandosincluderequireinclude_oncerequire_once"><span 
class="searchword3">Com</span>andos 
      include/require/include_once/require_once<a title="Link to this section"
 href="#Comandosincluderequireinclude_oncerequire_once" class="anchor"></a></h3>
    <p> <span class="searchword4">php</span>Documentor extrai o nome do arquivo e
      tenta ligar a <span class="searchword2">documentação</span> <span 
class="searchword1">para</span> o respectivo arquivo se possível. <span 
class="searchword3">Com</span>andos include podem apenas ter as tags <span
 class="searchword0">padrão</span>. </p>
    <p> <span class="searchword4">php</span>Documentor tentará localizar o 
      arquivo incluído na lista de arquivos analisados, encontrando-o fará uma
      ligação <span class="searchword1">para</span> a <span 
class="searchword2">documentação</span> do arquivo. </p>
    <h3 id="Comandosdefine"><span class="searchword3">Com</span>andos define<a
 title="Link to this section" href="#Comandosdefine" class="anchor"></a></h3>
    <p> O bloco de <span class="searchword3">com</span>entários de uma 
      declaração define poderá conter qualquer tag <span class="searchword0">padrão</span> do <span class="searchword4">php</span>Documentor, acrescido da tag: </p>
    <ul>
      <li>@name [nome_var]: Especifica um apelido <span 
class="searchword1">para</span> uma página procedural ou variável global </li>
    </ul>
    <pre class="wiki">    Exemplo:
    /**
     * Prefixo das tabelas do workflow
     * @name GALAXIA_TABLE_PREFIX
     */

     define('GALAXIA_TABLE_PREFIX', 'egw_wf_');
    </pre>
    <h3 id="Variáveisglobais">Variáveis globais<a title="Link to this 
section" href="#Vari%C3%A1veisglobais" class="anchor"></a></h3>
    <ul>
      <li>@global (obrigatória): [datatype  $globalvariablename, datatype 
        description] </li>
    </ul>
    <ul>
      <li>@name [nome_var]: Especifica um apelido <span 
class="searchword1">para</span> uma página procedural ou variável global </li>
    </ul>
    <pre class="wiki">    Exemplo
    /**
     * Special global variable declaration DocBlock
     * @global integer $GLOBALS['_myvar'] 
     * @name $_myvar
     */

    $GLOBALS['_myvar'] = &quot;myval&quot;;
    </pre>
    <h3 id="Declaraçãodefunções">Declaração de funções<a title="Link 
to this section" href="#Declara%C3%A7%C3%A3odefun%C3%A7%C3%B5es" 
class="anchor"></a></h3>
    <ul>
      <li>@global [datatype  $globalvariablename, datatype  description] </li>
    </ul>
    <ul>
      <li>@<span class="searchword1">para</span>m [datatype 
        $paramname description]: Parâmetro de função ou método </li>
    </ul>
    <ul>
      <li>@return [datatype description]: Tipo de retorno de 
        função ou método </li>
    </ul>
    <ul>
      <li>@staticvar [datatype description]: Uso de uma variável
        estática dentro de uma função ou método </li>
    </ul>
    <ul>
      <li>inline {@source} </li>
    </ul>
    <pre class="wiki">    Exemplo:
    /**
     * Includes files from the process folder.
     * @<span class="searchword1">para</span>m string $file_name File's name to be included.
     * @return void
     * @license http://www.gnu.org/copyleft/gpl.html GPL
     * @access public
     */

    function wf_include( $file_name )
    </pre>
    <h2 id="Classes">Classes<a title="Link to this section" 
href="#Classes" class="anchor"></a></h2>
    <ul>
      <li>@package [nome_pacote]: Agrupa classes, funções e constantes </li>
    </ul>
    <ul>
      <li>@subpackage [nome_subpacote]: Agrupa classes, funções e
        constantes de um pacote </li>
    </ul>
    <ul>
      <li>@category [nome_categoria]: Organizar o pacote do 
        elemento documentado </li>
    </ul>
    <ul>
      <li>@static: Classe ou método estático </li>
    </ul>
    <ul>
      <li>@abstract: Documenta uma classe abstrata, atributo ou 
        método </li>
    </ul>
    <ul>
      <li>@license [URL name of license]: Mostra um link <span 
class="searchword1">para</span> a URL da licença </li>
    </ul>
    <blockquote>
      <p> Os blocos de <span class="searchword3">com</span>entários são herdados 
        pelas classes filhas, variáveis e métodos. As regras <span 
class="searchword1">para</span> herança são: </p>
    </blockquote>
    <ul>
      <li>As tags @author, @version e @copyright são automaticamente 
        herdadas a não ser explicitamente especificado em contrário; </li>
    </ul>
    <ul>
      <li>Embora as tags @package e @subpackage sejam herdadas 
        automaticamente, é re<span class="searchword3">com</span>endado que 
        sejam usadas explicitamente <span class="searchword1">para</span> todas 
        as classes para evitar problemas de conflitos; </li>
    </ul>
    <ul>
      <li>Em caso de ausência de descrição breve, ela será 
        herdada; </li>
    </ul>
    <ul>
      <li>Em caso de ausência de descrição longa, ela será 
        herdada; </li>
    </ul>
    <ul>
      <li>Em caso de haver uma descrição longa e ainda se quiser
        herdar a descrição da superclasse, use inline {@inheritdoc} </li>
    </ul>
    <pre class="wiki">    Exemplo:
    /**
     * Criptografia simples e segura baseada em funções hash   
     * @author	Marc Wöhlken, woehlken@quadra<span class="searchword3">com</span>.de
     * @author	Carlos Eduardo Nogueira Gonçalves
     * @version 1.0
     * @license http://www.gnu.org/copyleft/gpl.html GPL
     * @package Workflow
     */

    class wf_crypt

    Exemplo usando descrição breve e descrição longa:

    /**
     * short desc
     *
     * long desc
     * @package test
     * @author me
     * @version 1.0
     * @abstract
     * @copyright never
     */
    </pre>
    <h3 id="Atributos">Atributos<a title="Link to this section" 
href="#Atributos" class="anchor"></a></h3>
    <p> O bloco de <span class="searchword3">com</span>entário de atributos pode
      conter qualquer tag <span class="searchword0">padrão</span> e 
      obrigatóriamente a tag @var </p>
    <ul>
      <li>@var [datatype $varname descrição]: Um atributo </li>
    </ul>
    <ul>
      <li>@access [private, protected, public]: Controle de 
        acesso <span class="searchword1">para</span> um elemento </li>
    </ul>
    <pre class="wiki">    Exemplo:
    /**
     * @var	string $hash_key Versão embaralhada da chave de criptografia fornecida pelo usuário
     * @access public
     */

    var $hash_key;
    </pre>
    <h3 id="Métodos">Métodos</h3>
    <ul>
      <li>@access [private, protected, public]: Controle de acesso <span 
class="searchword1">para</span> um elemento </li>
    </ul>
    <ul>
      <li>@global [datatype $globalvariablename, datatype  
        description] </li>
    </ul>
    <ul>
      <li>@<span class="searchword1">para</span>m [datatype 
        $paramname description]: Parâmetro de função ou método </li>
    </ul>
    <ul>
      <li>@return [datatype description]: Tipo de retorno de 
        função ou método.(Caso retorne mixed especificar quais os tipos 
        possíveis na descrição) </li>
    </ul>
    <ul>
      <li>@static: Classe ou método estático </li>
    </ul>
    <ul>
      <li>@staticvar [datatype description]: Uso de uma variável
        estática dentro de uma função ou método </li>
    </ul>
    <ul>
      <li>@final: Método que não deve ser sobrescrito nas 
        subclasses </li>
    </ul>
    <ul>
      <li>inline {@source} </li>
    </ul>
    <pre class="wiki">    Exemplo:
    /**
     * Usado <span class="searchword1">para</span> definir a chave de criptografia e descriptografia
     * @param	string	$key	Chave secreta usada para criptografia e descriptografia
     * @param	boolean	$base64	Usar codificação base64
     * @return void 
     * @access public
     */

    function setKey($key, $base64 = true)
  </pre>
  </div>
  </body></html>